मुख्य कंटेंट तक स्किप करें

लाइव MQTT नियंत्रण

टिप

लाइव MQTT नियंत्रण लाइव नियंत्रण के लिए बनाया गया है। पहले से समय भेजने के लिए, अनुसूचित MQTT नियंत्रण देखें।

यह मार्गदर्शिका आपको अपने SmartgridOne Controller पर MQTT कॉन्फ़िगर करने में मदद करेगी ताकि आप बैटरी और सौर पैनल इंस्टॉलेशन को दूरस्थ रूप से नियंत्रित और मॉनिटर कर सकें।

आपको क्या चाहिए

  1. इंटरनेट कनेक्टिविटी के साथ SmartgridOne Controller
  2. MQTT क्रेडेंशियल्स: इसे support@eniris.be पर एक ईमेल भेजकर अनुरोध किया जा सकता है।
  3. पायथन विकास पर्यावरण (या कोई अन्य MQTT क्लाइंट)। यह मार्गदर्शिका आपको MQTT के साथ शुरुआत करने और कमांड भेजने के लिए पायथन में लिखी गई एक बुनियादी उदाहरण का उपयोग करती है। उपयोग में आसानी के लिए पायथन का उपयोग करने की सिफारिश की जाती है, लेकिन कोई अन्य MQTT क्लाइंट भी समर्थित है।

अतिरिक्त जानकारी

MQTT एक तेज़ संचार प्रोटोकॉल है जो इंटरनेट पर उपयोग होता है। यह एक प्रकाशन/सदस्यता संदेश प्रणाली है, जो आपके मशीन और SmartgridOne Controller के बीच सीधा कनेक्शन स्थापित करता है। आपकी संपत्तियाँ सौर, बैटरी, EV और HVAC समूहों में वर्गीकृत की जाती हैं।

पहली बार कॉन्फ़िगरेशन (नए उपयोगकर्ताओं के लिए प्रारंभिक बिंदु)

मेरे पास एक SmartgridOne Controller है जिसे मैं MQTT रिमोट कंट्रोल के लिए सेटअप करना चाहता हूँ।

1. अपने नेटवर्क की जाँच करें

सुनिश्चित करें कि आपका नेटवर्क पोर्ट 1883 पर mqtt नेटवर्क ट्रैफ़िक की अनुमति देता है। आप यह आदेश देकर कर सकते हैं:

nc -zv mqtt.eniris.be 1883

जब यह आदेश उपलब्ध नहीं है, तो आप वैकल्पिक रूप से यह पायथन कोड डाउनलोड और निष्पादित कर सकते हैं।

जब संदेह हो, अपने नेटवर्क इंजीनियर से परामर्श करें या कनेक्शन त्रुटियों के समय अस्थायी रूप से अपने फोन के 4G/5G हॉटस्पॉट का उपयोग करें।

नोट

जब पोर्ट 1883 आपके नेटवर्क से सुलभ नहीं है, तो हम पोर्ट 80 पर एक बैकअप प्रदान करते हैं। इसे इस मैनुअल के एक बाद के चरण में आपके MQTT-क्लाइंट में कॉन्फ़िगर किया जा सकता है।

2. अपने उपकरण जोड़ें

कमिशनिंग इंटरफ़ेस में लॉगिन करें और सुनिश्चित करें कि उपकरण जोड़े गए हैं आपके SmartgridOne Controller में।

3. MQTT बाहरी संकेत जोड़ें

Image 1
Image 1
Image 1
Image 1

4. MQTT रिमोट सिग्नल सक्रिय करें

फील्ड 'VPP ID' को खाली छोड़ना चाहिए।

फॉलबैक मैकेनिज्म टाइमआउट SmartgridOne Controller को बताता है कि नई कमांड के लिए कितनी देर तक इंतज़ार करना चाहिए। जब SmartgridOne Controller कमांड प्राप्त करना बंद कर देता है, तो यह स्वचालित रूप से इस टाइमआउट के बाद डिफ़ॉल्ट रणनीति अपना लेता है।

इसके बाद, सभी उपकरणों का चयन करें जिन्हें आप MQTT रिमोट कंट्रोल में शामिल करना चाहते हैं।

Image 1
Image 1

5. रिमोट सिग्नल जोड़ा गया

अब SmartgridOne Controller पर MQTT रिमोट कंट्रोल इंटरफेस को सक्रिय किया गया है।

अब हम कुछ बुनियादी कमांड भेजने के लिए एक सरल उदाहरण का उपयोग करने के लिए तैयार हैं। स्थिति कॉलम आपको बताता है कि कोई कमांड सक्रिय है या नहीं।

Image 1

पायथन डेमो स्क्रिप्ट

एक अच्छा प्रारंभिक बिंदु आपके नए सेटअप इंटीग्रेशन का परीक्षण एक सरल उदाहरण के साथ है।

यह परीक्षण कोड लगातार निम्नलिखित कमांड भेजने का एक साधारण कार्य करता है:

  • बैटरी: 5 kW पर चार्ज करें
  • सौर: पावर को 0 kW पर सेट करें

SmartgridOne Controller लगातार 'फीडबैक' संदेश के साथ प्रतिक्रिया करता है जिसमें अवलोकित ग्रिड और संपत्ति पावर मान होते हैं। यह फीचर भी इस उदाहरण में शामिल है।

कृपया अपने पसंदीदा पायथन IDE में नीचे दिए गए फ़ाइल को डाउनलोड करें। अपनी सीरियल संख्या और MQTT-क्रेडेंशियल्स भरें और स्क्रिप्ट निष्पादित करें:

जब उपरोक्त सफल हो जाता है, तो आप अन्य प्रकार के कमांड भेजना जारी रख सकते हैं। सभी कमांड हमारे MQTT रिमोट कंट्रोल दस्तावेज़ में वर्णित हैं।

MQTT दस्तावेज़ कमांड भेजने के लिए

यह अनुभाग MQTT संदेश प्रारूप और SmartgridOne Controller के नेटवर्क में उपकरणों पर पावर नीतियों को दूरस्थ रूप से नियंत्रित करने के लिएpayload आवश्यकताओं का विवरण देता है।

MQTT टॉपिक

कमांड भेजने के लिए उपयोग किया जाने वाला MQTT टॉपिक इस तरह से संरचित है:

standard1/rp_one_s/remoteControlMetrics/'controller SN'

जहाँ 'controller SN' को उस SmartgridOne Controller की वास्तविक सीरियल संख्या से प्रतिस्थापित किया जाना चाहिए जिसे आप नियंत्रित करना चाहते हैं।

MQTT Payload संरचना

कमांड JSON payload के रूप में भेजे जाते हैं। payload संरचना विभिन्न पावर प्रबंधन नीतियों और स्मार्ट ग्रिड सिस्टम के विभिन्न घटकों के लिए सेटपॉइंट्स को निर्दिष्ट करने के लिए डिज़ाइन की गई है। यहाँ payload का खाका है जिसमें विस्तृत फ़ील्ड विवरण हैं:

{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": "<Unix Timestamp>",
"fields": {
"<Component Policy>": "<Policy Type>",
"<Component Power Setpoint>": <Setpoint in watts>
}
}

फ़ील्ड विवरण

टिप

एक समय में कई प्रकार के उपकरण (जैसे बैटरी + सौर) को नियंत्रित किया जा सकता है।

  • extraTags (ऑब्जेक्ट):
    • nodeId (स्ट्रिंग): SmartgridOne Controller के नेटवर्क में नोड के लिए एक अद्वितीय पहचानकर्ता। यह आपकी सीरियल संख्या के बराबर है, इसके बाद अधिकांश SmartgridOne Controller उपकरणों के लिए '_site_0' है।
  • time (पूर्णांक): जब संदेश भेजा जाता है, उस समय को इंगित करने वाला यूनिक्स टाइमस्टैम्प सेकंड में।
  • fields (ऑब्जेक्ट):
    • <Component>_policy (स्ट्रिंग): घटक के लिए नीति प्रकार। यह वैकल्पिक है और यदि निर्दिष्ट नहीं किया गया है, तो सिस्टम SmartgridOne Controller के डिफ़ॉल्ट सेटिंग पर वापस चला जाएगा।
    • <Component>_power_setpoint_w (फ्लोट): घटक के लिए वॉट्स में इच्छित पावर सेटपॉइंट। यह वैकल्पिक है और केवल तभी प्रासंगिक है जब एक संबंधित नीति निर्दिष्ट की गई हो।

घटक और नीतियाँ

जानकारी

एक ही प्रकार की संपत्तियाँ (जैसे दो बैटरियाँ) एक घटक के रूप में संयोजित होंगी। उदाहरण के लिए, जब दो 5 kWh बैटरियाँ स्थापित की जाती हैं, तो इसे एक 10 kWh बैटरी के रूप में समझा जाएगा।

fields ऑब्जेक्ट में प्रत्येक घटक एक नीति और एक पावर सेटपॉइंट शामिल कर सकता है। निम्नलिखित घटकों को नियंत्रित किया जा सकता है:

  • solar_policy और solar_power_setpoint_w:

    • सौर बिजली उत्पादन नीतियों और सेटपॉइंट को नियंत्रित करें। समर्थित नीतियाँ:
      • नीति सेटपॉइंट: सभी जुड़े हुए सौर इंस्टॉलेशन के द्वारा उत्पन्न अधिकतम बिजली को सेट करें। फ़ील्ड solar_power_setpoint_w को वॉट्स में उत्पादन बिजली सीमा पर सेट किया जाना चाहिए।
      • नीति फ़ीड-इन-प्रतिबंध: वर्तमान ग्रिड सीमाओं का पालन करते हुए पूर्ण शक्ति पर उत्पादन करें।
      • नीति लागत: सौर उत्पादन पर दिन-के-आगे मूल्य (EPEX स्पॉट मार्केट) लागत न्यूनतमकरण सक्षम करें। जब नकारात्मक इंजेक्शन मूल्य होते हैं, तो हम अपनी खपत के लिए उत्पादन को कम करते हैं। जब ऑफ़टेक और इंजेक्शन दोनों मूल्य नकारात्मक होते हैं, तो हम सभी सौर इंस्टॉलेशन को बंद कर देते हैं। फ़ील्ड solar_power_setpoint_w की अनदेखी की जाती है।
      • नीति बंद: सभी सौर संपत्तियों के लिए सभी इंटरैक्शन को बंद कर देता है। चेतावनी: इस मोड में सीमाएं नहीं रखी जा रही हैं। फ़ील्ड solar_power_setpoint_w की अनदेखी की जाती है।
  • storage_policy और storage_power_setpoint_w:

  • ऊर्जा भंडारण प्रणाली की नीति और शक्ति निर्वहन या चार्ज दर को नियंत्रित करता है।

    • नीति सेटपॉइंट: बैटरियों के समूह के लिए कुल चार्ज शक्ति (सकारात्मक सेटपॉइंट) या निर्वहन शक्ति (नकारात्मक सेटपॉइंट) सेट करें। जब एक से अधिक बैटरियां जुड़ी होती हैं, तो सेटपॉइंट उपलब्ध चार्ज / निर्वहन शक्ति द्वारा विभाजित किया जाता है ताकि बैटरियों पर समान तनाव डाल सके। फ़ील्ड storage_power_setpoint_w इच्छित बैटरी शक्ति पर सेट किया गया है।
    • नीति लागत: सस्ते घंटों में चार्ज कर और महंगे घंटों में ऊर्जा का उपयोग करके बैटरियों पर दिन-पूर्व मूल्य (EPEX स्पॉट मार्केट) लागत अनुकूलन सक्षम करता है। फ़ील्ड storage_power_setpoint_w की अनदेखी की जाती है।
    • नीति स्व-उपभोग: बैटरियों पर एक सरल स्व-उपभोग एल्गोरिदम सक्षम करता है। अतिरिक्त सौर उत्पादन को बैटरी में संग्रहित किया जाता है, और जब सूर्य अस्त होता है, तो बैटरी से ऊर्जा ली जाती है। फ़ील्ड storage_power_setpoint_w की अनदेखी की जाती है।
    • नीति ऑफ: सभी बैटरी संपत्तियों के लिए सभी इंटरैक्शन अक्षम करता है। चेतावनी: इस मोड में सीमाएँ सुरक्षित नहीं हैं। फ़ील्ड storage_power_setpoint_w की अनदेखी की जाती है।
  • heat_pump_policy:

    • हीटपंप सिस्टम को चालू / बंद करता है। न्यूनतम और अधिकतम चालू समय हमेशा सम्मानित किए जाएंगे।
    • नीति लागत: हीट पंपों पर दिन-पूर्व मूल्य (EPEX स्पॉट मार्केट) लागत अनुकूलन सक्षम करता है। स्थानीय गतिशील मूल्य निर्धारण एल्गोरिदम सर्वोत्तम चालू समय अवधियों का निर्णय करता है।
    • नीति स्व-उपभोग: यदि अतिरिक्त सौर ऊर्जा उत्पन्न होती है तो हीट पंप चालू कर देता है।
    • नीति पावर ऑफ: हीट पंपों को बंद कर देता है।
    • नीति पावर ऑन: हीट पंपों को चालू करता है।
  • switched_load_policy:

    • रिले-नियंत्रित सिस्टम को चालू / बंद करता है। यह अंतःनिर्मित रिले या नेटवर्क-कनेक्टेड रिले हो सकता है।
    • नीति लागत: रिले पर दिन-पूर्व मूल्य (EPEX स्पॉट मार्केट) लागत अनुकूलन सक्षम करता है।
    • नीति स्व-उपभोग: यदि अतिरिक्त सौर ऊर्जा उत्पन्न होती है तो रिले चालू कर देता है।
    • नीति पावर ऑफ
    • नीति पावर ऑन
  • variable_power_load_policy और variable_power_load_power_setpoint_w:

    • इलेक्ट्रिक वाहन शक्ति खपत नीति और सेटपॉइंट का प्रबंधन करता है।
    • नीति सेटपॉइंट: EV के समूह के लिए कुल चार्ज शक्ति सेट करें। फ़ील्ड variable_power_load_power_setpoint_w इच्छित चार्ज शक्ति पर सेट किया गया है।
    • नीति लागत: बैटरियों पर दिन-पूर्व मूल्य (EPEX स्पॉट मार्केट) लागत अनुकूलन सक्षम करता है, इसे सस्ते घंटों में चार्ज करके। फ़ील्ड variable_power_load_power_setpoint_w की अनदेखी की जाती है।
    • नीति स्व-उपभोग: यदि अतिरिक्त सौर ऊर्जा उत्पन्न होती है तो चार्जिंग सक्षम करता है। फ़ील्ड variable_power_load_power_setpoint_w की अनदेखी की जाती है।
    • नीति ऑफ: सभी EV संपत्तियों के लिए सभी इंटरैक्शन अक्षम करता है। फ़ील्ड variable_power_load_power_setpoint_w की अनदेखी की जाती है।
  • site_policy और site_power_setpoint_w:

    • साइट के निर्यात सीमाओं का प्रबंधन करता है।
    • नीति निर्यात: साइट के लिए निर्यात सीमा सेट करें। फ़ील्ड site_power_setpoint_w निर्यात सीमा पर सेट किया गया है।
    • नीति डिफ़ॉल्ट: साइट सीमा को नियंत्रक कॉन्फ़िगरेशन में निर्धारित डिफ़ॉल्ट निर्यात शक्ति पर वापस लाता है।

डिवाइस नियंत्रण

विशिष्ट उपकरणों को उनके प्रकार के आधार पर समूहों के बजाय भी नियंत्रित किया जा सकता है। संदेश समान संरचना का है:

  • nodeId_policy और nodeId_power_setpoint_w

जब एक ही संपत्ति को दो आदेश भेजे जाते हैं (जैसे एक डिवाइस-विशिष्ट आदेश एक सौर इनवर्टर के लिए, और सभी सौर उपकरणों के लिए एक आदेश), तो डिवाइस-विशिष्ट नियंत्रण विधि डिवाइस प्रकार नियंत्रण पर प्राथमिकता लेगी।

फ़ॉलबैक व्यवहार

प्रत्येक घटक के लिए, यदि _policy और _power_setpoint_w निर्दिष्ट नहीं किया गया है, तो प्रणाली स्वचालित रूप से SmartgridOne Controller में कॉन्फ़िगर किए गए फ़ॉलबैक नीति का उपयोग करेगी। यह सुनिश्चित करता है कि प्रत्येक डिवाइस या डिवाइस समूह सुरक्षित रूप से कार्य करता है और यदि विशिष्ट निर्देश नहीं दिए जाते हैं तो भी कार्य करना जारी रखता है।

यदि कोई आदेश बिल्कुल नहीं भेजा जा रहा है, तो 60 सेकंड (या कॉन्फ़िगर की गई टाइमआउट अवधि) के बाद, संपत्तियों के लिए डिफ़ॉल्ट नीतियां फिर से सक्रिय हो जाएंगी।

उदाहरण पेएलोड

नीचे विभिन्न नीतियों और सेटपॉइंट्स को सेट करने के लिए पेएलोड का एक उदाहरण है:

{
"extraTags": {
"nodeId": "OM12404080000000000_site_0"
},
"time": 1714652046,
"fields": {
"solar_policy": "setpoint",
"solar_power_setpoint_w": 5000,
"storage_policy": "setpoint",
"storage_power_setpoint_w": -5000
}
}

इस उदाहरण में, सौर शक्ति को 5000 वाट उत्पन्न करने के लिए सेट किया गया है, और ऊर्जा भंडारण प्रणाली को 5000 वाट की दर से चार्ज या निर्वहन करने के लिए सेट किया गया है, सेटपॉइंट मान के चिह्न के आधार पर। यदि या तो solar_policy या storage_policy को छोड़ दिया गया, तो संबंधित डिवाइस SmartgridOne Controller द्वारा निर्धारित डिफ़ॉल्ट सेटिंग्स पर वापस लौटेगा।

MQTT प्रतिक्रिया के लिए दस्तावेज़ीकरण

यह अनुभाग SmartgridOne Controller द्वारा MQTT के माध्यम से भेजे गए प्रतिक्रिया संदेशों की संरचना और सामग्री को रेखांकित करता है। ये संदेश एक आदेश संसाधित होने के बाद विषय standard1/outbound/remoteControlMetrics/feedback/<Controller SN> पर प्रकाशित होते हैं।

MQTT प्रतिक्रिया विषय

प्रतिक्रिया MQTT विषय इस प्रकार संरचित है:

standard1/outbound/remoteControlMetrics/feedback/<Controller SN>

जहां <Controller SN> को उस SmartgridOne Controller के क्रमांक के साथ प्रतिस्थापित किया जाना चाहिए जो प्रतिक्रिया भेज रहा है।

MQTT प्रतिक्रिया पेएलोड संरचना

प्रतिक्रिया संदेश JSON पेएलोड के रूप में प्रारूपित किए जाते हैं। ये पेएलोड सिस्टम की स्थिति पर विस्तृत प्रतिक्रिया प्रदान करते हैं जब सेटपॉइंट आदेश लागू किए जाते हैं, ग्रिड/डिवाइस सीमाओं पर विचार करते हुए। नीचे प्रतिक्रिया पेएलोड की संरचना दी गई है जिसमें इसके फ़ील्ड का विवरण है:

{
"time": "<Unix Timestamp>",
"data": {
"state": {
"grid": {
"active_power_W": <Grid Active Power in Watts>,
"today_imported_energy_Wh": <Grid Imported Energy in Watt-hours>,
"today_exported_energy_Wh": <Grid Exported Energy in Watt-hours>,
"import_limit_W": <Grid Import Limit in Watts>,
"export_limit_W": <Grid Export Limit in Watts>,
},
"vpp_id": "<Virtual Power Plant Identifier>",
"storage": {
"energy_stored_Wh": <Energy Stored in Watt-hours>,
"energy_capacity_Wh": <Total Energy Capacity in Watt-hours>,
"mean_soc_perc": <Mean State of Charge Percentage>,
"active_power_W": <Active Power in Watts>,
"executed_power_W": <Power Setpoint Sent to Devices in Watts>,
"executed_policy": <Policy Executed by the Controller>,
"max_charge_power_W": <Maximum Charge Power in Watts>,
"max_discharge_power_W": <Maximum Discharge Power in Watts>,
"today_charged_Wh": <Energy Charged on the Current Today in Watt-hours>,
"today_discharged_Wh": <Energy Discharged on the Current Today in Watt-hours>,
"nr_devices": <Number of Controlled Storage Devices Installed>
},
"solar": {
"active_power_W": <Solar Active Power in Watts>,
"executed_power_W": <Power Setpoint Sent to Devices in Watts>,
"executed_policy": <Policy Executed by the Controller>,
"capacity_W": <सौर क्षमता वॉट में>,
"today_energy_Wh": <आज उत्पादन की गई ऊर्जा वॉट-घंटे में>.
"nr_devices": <संयुक्त सौर उपकरणों की संख्या>
},
"heat_pump": {
"executed_policy": <नियामक द्वारा लागू की गई नीति>,
"operation_modes": <हीटपंप ऑपरेशन मोड>,
"executed_power_W": <उपकरणों को भेजा गया पावर सेटपॉइंट वॉट में>,
"nr_devices": <नियंत्रित हीट पंप उपकरणों की संख्या>
},
"switched_load": {
"executed_policy": <नियामक द्वारा लागू की गई नीति>,
"devices_on": <चालू उपकरणों की संख्या>,
"devices_off": <बंद उपकरणों की संख्या>,
"executed_power_W": <उपकरणों को भेजा गया पावर सेटपॉइंट वॉट में>,
"nr_devices": <नियंत्रित स्विच लोड उपकरणों की संख्या>
}
},
"response_code": <प्रतिक्रिया कोड>
},
"fields": {},
"requestTime": "<यूनिक्स टाइमस्टैम्प>",
"time": "<यूनिक्स टाइमस्टैम्प>",
"siteNodeId": "<नियामक SN>_site_0"
}

### फ़ील्ड्स का विवरण
- time (Integer): यूनिक्स टाइमस्टैम्प जो यह संकेत करता है कि फीडबैक संदेश कब भेजा गया था।
- fields (Object):
- state (Object):
- vpp_id (String): इस उपकरण से संबंधित वर्चुअल पावर प्लांट का पहचानकर्ता।
- grid (Object):
- active_power_W (Float): ग्रिड पर वर्तमान सक्रिय पावर वॉट में।
- today_imported_energy_Wh (Float): आज ग्रिड से ली गई कुल ऊर्जा वॉट घंटों में। नोट: आज UTC समय में दिया गया है।
- today_exported_energy_Wh (Float): आज ग्रिड में पुनः इंजेक्ट की गई कुल ऊर्जा वॉट घंटों में। नोट: आज UTC समय में दिया गया है।
- import_limit_W (Float): ग्रिड आयात सीमा वॉट में,
- export_limit_W (Float): ग्रिड निर्यात सीमा वॉट में,
- storage (Object):
- energy_stored_Wh (Float): वॉट-घंटे में संग्रहीत ऊर्जा की वर्तमान मात्रा।
- energy_capacity_Wh (Float): वॉट-घंटे में भंडारण प्रणाली की कुल ऊर्जा क्षमता।
- mean_soc_perc (Float): प्रतिशत के रूप में चार्ज की स्थिति। यह सभी जुड़े बैटरियों के बीच का भारित औसत है। (जब कई बैटरियाँ जुड़ी हों: जैसे बैटरी 'a' की ऊर्जा क्षमता 10 kWh है और चार्ज की स्थिति 20% है; बैटरी 'b' की ऊर्जा क्षमता 20 kWh है और चार्ज की स्थिति 50% है, तो mean_soc_perc 40% होगा)
- active_power_W (Float): वॉट में भंडारण प्रणाली के लिए वर्तमान सक्रिय पावर, चार्ज या डिस्चार्ज दर दिखा रहा है।
- max_charge_power_W (Float): अधिकतम पावर जिस पर भंडारण को चार्ज किया जा सकता है।
- max_discharge_power_W (Float): अधिकतम पावर जिस पर भंडारण को डिस्चार्ज किया जा सकता है।
- executed_power_W (Float): भंडारण संपत्तियों से (डिस)चार्ज करने के लिए अनुरोधित कुल पावर का योग, जिसे हमारे नियंत्रण एल्गोरिदम द्वारा भेजा गया है। केवल तभी लागू होता है जब 'फॉलो सेटपॉइंट'-नीति सक्रिय हो।
- executed_policy (Str): जो नीतियाँ नियंत्रित वस्तुओं पर लागू की गई हैं।
- today_charged_Wh (Float): नियंत्रित बैटरी संपत्ति में आज चार्ज की गई कुल ऊर्जा। नोट: आज UTC समय में दिया गया है।
- today_discharged_Wh (Float): आज के दिन नियंत्रित बैटरी संपत्ति से डिस्चार्ज की गई कुल ऊर्जा। नोट: आज UTC समय में दिया गया है।
- nr_devices (Int): नियंत्रित बैटरी संपत्तियों की संख्या।
- solar (Object):
- active_power_W (Float): वॉट में सौर पैनलों द्वारा उत्पन्न वर्तमान सक्रिय पावर।
- capacity_W (Float): वॉट में सौर जनरेशन प्रणाली की कुल क्षमता।
- executed_power_W (Float): सूर्य संपत्तियों से अनुरोधित कुल पावर का योग, जिसे हमारे नियंत्रण एल्गोरिदम द्वारा भेजा गया है। केवल तभी लागू होता है जब 'फॉलो सेटपॉइंट'-नीति सक्रिय हो।
- executed_policy (Str): जो नीतियाँ नियंत्रित वस्तुओं पर लागू की गई हैं।
- today_energy_Wh (Float): आज नियंत्रित सौर संपत्ति से उत्पादित कुल ऊर्जा। नोट: आज UTC समय में दिया गया है।
- nr_devices (Int): नियंत्रित सौर संपत्तियों की संख्या।
- heat_pump (Object):
- executed_policy (Str): जो नीतियाँ नियंत्रित वस्तुओं पर लागू की गई हैं।
- operation_modes (Str): हीटपंप का मोड (ब्लॉकिंग मोड, बूस्टिंग मोड, आत्म नियंत्रण मोड)
- executed_power_W (Float): अपेक्षित पावर जो इसे वर्तमान में उपयोग कर रही है।
- nr_devices (Int): नियंत्रित हीटपंपों की संख्या।
- switched_load (Object):
- executed_policy (Str): जो नीतियाँ नियंत्रित वस्तुओं पर लागू की गई हैं।
- devices_on (Int): चालू उपकरणों की संख्या।
- devices_off (Int): बंद उपकरणों की संख्या।
- executed_power_W (Float): पावर जो इसे वर्तमान में उपयोग कर रही है (यदि उपलब्ध हो)।
- nr_devices (Int): नियंत्रित ऑन/ऑफ स्विच लोडों की संख्या।
- nodeId (Object):
- यदि किसी nodeId को आदेश में शामिल किया गया है, तो फीडबैक में उपकरण की संबंधित स्थिति शामिल होगी।
- response_code (Int):
- संचालन की स्थिति को इंगित करता है। प्रतिक्रिया कोड 0 आमतौर पर सफलता का मतलब है, जबकि अन्य मान विभिन्न प्रकार की त्रुटियों या स्थिति जानकारी को इंगित कर सकते हैं (इनका विवरण एक अलग संदर्भ में होना चाहिए)।

### उदाहरण फीडबैक पेलोड
यहां एक आदेश के बाद फीडबैक संदेश का उदाहरण है, जो विभिन्न पावर सेटपॉइंट्स को स्थापित करता है:

<ClickableImage src="/img/generic/mqtt-example-feedback.png" alt="छवि 1" maxWidth="450px" />

यह फीडबैक सेटपॉइंट्स को निष्पादित करने के बाद प्रणाली की वर्तमान परिचालन स्थिति को दर्शाता है, जो सौर उत्पादन, भंडारण, और समग्र ग्रिड अंतःक्रिया पर प्रभावों को दर्शाता है।

## समर्थित MQTT संस्करण और अपराधिक विषयों पर व्यवहार
जब MQTT का उपयोग करते हैं, तो यह महत्वपूर्ण है कि 3.1, 3.1.1, और 5.0 के बीच विनिर्देशों में अंतर पर विचार करें, विशेष रूप से उन मामलों में जब ग्राहक अवैध विषयों पर प्रकाशन करते हैं।

MQTT 3.1.1 विनिर्देशन के अनुसार (OASIS MQTT 3.1.1 विनिर्देशन, अनुभाग MQTT-3.3.5-2 देखें), एक ब्रोकर को कनेक्शन बंद करना चाहिए जैसे ही एक ग्राहक किसी विषय पर PUBLISH भेजता है जिसके लिए उसे अनुमति नहीं है। यह व्यवहार उन ग्राहकों के लिए अप्रत्याशित डिकनेक्शन का कारण बन सकता है जो गलत कॉन्फ़िगर या अवैध विषयों पर प्रकाशन करने का प्रयास कर रहे हैं।

MQTT 3.1 में यह आवश्यकता नहीं है। जब कोई ग्राहक इस संस्करण के तहत अवैध विषय पर प्रकाशन करता है, तो ब्रोकर आमतौर पर संदेश को नजरअंदाज करता है (मूक रूप से गिराना) बिना कनेक्शन समाप्त किए। यह कुछ मामलों में MQTT 3.1 को तब अधिक उपयुक्त बनाता है जब कॉन्फ़िगरेशन की त्रुटियों या अस्थायी रूप से अनुपलब्ध अनुमतियों के खिलाफ स्थिरता अधिक महत्वपूर्ण हो सख्त सुरक्षा प्रवर्तन की तुलना में।

हालांकि MQTT 5.0 कारण कोडों (जैसे PUBACK के साथ एक अस्वीकृति कारण) के साथ काम करने की क्षमता प्रदान करता है, इसके लिए ग्राहक और सर्वर दोनों पक्षों पर समर्थन की आवश्यकता होती है। इस प्रकार MQTT 5.0 में स्थानांतरित होने का अर्थ है अतिरिक्त कार्यान्वयन प्रयास।

__संगतता की अनदेखी के परिणाम:__
यदि कोई क्लाइंट MQTT 3.1.1 का उपयोग करके कनेक्ट होता है और अव्यवस्थित टॉपिक्स पर संदेश प्रकाशित करने का प्रयास करता है, तो ब्रोकर सत्र को अचानक समाप्त कर देगा। इससे अस्थिरता, कनेक्टिविटी का नुकसान, या बार-बार पुनः कनेक्ट करने के प्रयासों के कारण लोड बढ़ सकता है।

__अनुशंसित दृष्टिकोण:__
उन सिस्टमों के लिए जहां क्लाइंट (अस्थायी रूप से) अव्यवस्थित टॉपिक्स पर प्रकाशित करने का प्रयास कर सकते हैं, या जहां त्रुटि प्रबंधन सख्ती से लागू नहीं किया गया है, हम MQTT 3.1 का उपयोग करने की सिफारिश करते हैं। यह अधिक स्थिर कनेक्शन सुनिश्चित करता है और रनटाइम के दौरान अनपेक्षित डिस्कनेक्ट से बचता है।